#ifndef BOX_OWNED_STATES_H
#define BOX_OWNED_STATES_H
//------------------------------------------------------------------------
//
//  Name:   MinerOwnedStates.h
//
//  Desc:   All the states that can be assigned to the Miner class.
//          Note that a global state has not been implemented.
//
//  Author: Mat Buckland 2002 (fup@ai-junkie.com)
//
//------------------------------------------------------------------------
#include "OgreRefAppState.h"
#include "OgreRefAppBox.h"

//------------------------------------------------------------------------
//
//  In this state the miner will walk to a goldmine and pick up a nugget
//  of gold. If the miner already has a nugget of gold he'll change state
//  to VisitBankAndDepositGold. If he gets thirsty he'll change state
//  to QuenchThirst
//------------------------------------------------------------------------
namespace OgreRefApp
{
	struct ApplicationObject::CollisionInfo;

	class BoxOnGame : public State<Box>
	{
	private:

	  BoxOnGame(){}

	  //copy ctor and assignment should be private
	  BoxOnGame(const BoxOnGame&);
	  BoxOnGame& operator=(const BoxOnGame&);

	public:

	  //this is a singleton
	  static BoxOnGame* Instance();

	  virtual void Enter(Box* box);

	  virtual void Execute(Box* box);

	  virtual void Exit(Box* box);

	  virtual bool OnMessage(Box* box, ApplicationObject::CollisionInfo& msg);

	};
}

#endif;
